package com.ftwj.demo.base.wrapper;

import java.util.ArrayList;

import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
/**
*
* <p>Title: QueryWrapper</p>  
* <p>Description: SQL查询构建器</p>
* <p>Copyright: Copyright (c) 2020 </p>  
* <p>Company: 兰州飞天网景信息产业有限公司</p>    
* @author WangSLi
* @date 2020年3月25日 下午10:32:19
* @version V1.0
 */
public class QueryWrapper extends ConditionWrapper implements Query {
	
	private String tableAs="a";
	private StringBuilder select;
	private StringBuilder subquery;
 	
	public QueryWrapper() {
		super();
		select=new StringBuilder();
		subquery=new StringBuilder();
	}

	public StringBuilder getSelect() {
		return select;
	}
	public StringBuilder getSubquery() {
		return subquery;
	}
	public String getTableAs() {
		return tableAs;
	}
	
	/**
	 * 
	 * <p>Title: select</p>  
	 * <p>Description: 选择字段查询</p>  
	 * @param columns 查询的字段
	 * @return 
	 * @author WangSLi
	 * @date 2020年3月26日  
	 * @version 1.0
	 */
	@Override
	public QueryWrapper select(String...columns){
		ArrayList<String> columnList = CollectionUtil.newArrayList(columns);
		Object[] obj = columnList.stream().map(str->StrUtil.format("`{}`", str)).toArray();
		String str=StrUtil.join(", ", obj);
		select.append(str);
		return this;
	}
	
	/**
	 * 
	 * <p>Title: selectSub</p>  
	 * <p>Description: 构建拼接子查询语句</p>  
	 * @param tableAs 原表AS的表明
	 * @param query 子查询语句
	 * @return 
	 * @author WangSLi
	 * @date 2020年3月26日  
	 * @version 1.0
	 */
	@Override
	public QueryWrapper selectSub(String tableAs,String...query) {
		this.tableAs=tableAs;
		Object[] strs=query;
		String str=StrUtil.join(", ", strs);
		subquery.append(str);
		return this;
	}
}
